package javaPV;

import java.util.concurrent.atomic.AtomicInteger;

public class PV {
    private AtomicInteger s;

    public PV() {
        this.s = new AtomicInteger(1);
    }

    public PV(int s) {
        this.s = new AtomicInteger(s);
    }

    /**
     * 获取资源， 获取到资源返回 true, 反之返回 false
     * @return
     */
    public boolean P() {

        int p = s.get();
        //判断信号量是否  == 0； = 0 说明无资源可用
        if (p > 0 && s.compareAndSet(p, p - 1)) {
            return true;
        }
        return false;
    }

    /**
     * 释放资源
     */
    public void V(){
        s.getAndIncrement();
    }


    public int get(){
        return s.get();
    }
}
